package com.sunyifeng.ch03;

/**
 * 1. 创建枚举类型：
 * 首先，需要创建一个枚举类型，枚举元素代表类的唯一实例。枚举类型默认是 final 的，因此不能被继承。
 * 2. 定义访问修饰符：
 * 枚举的实例（枚举项）默认是 public static final 的，因此无需额外定义访问修饰符。这意味着枚举实例是公开的、静态的、
 * 且最终的，符合单例模式的要求。
 * 3. 实现单例设计模式的成员函数：
 * 在枚举中可以添加实例方法，这些方法可以被外部调用以执行特定的操作。由于枚举实例是唯一的，
 * 因此这些方法将操作的是同一个实例的状态。
 *
 * 1. 优点：
 * 实现简单：使用枚举实现单例模式代码量少，简洁明了。
 * 线程安全：枚举类型是线程安全的，无需额外的同步措施。
 * 防止反序列化：枚举类型可以防止反序列化重新创建新的对象，确保单例的唯一性。
 * 防止反射攻击：枚举类型可以防止通过反射来创建新的实例。
 * 2. 缺点：
 * 不可延迟加载：枚举实例在类加载时就已经实例化，无法实现延迟加载。
 * 不可扩展：枚举类型不能被继承，因此不能通过继承来扩展单例类的功能。
 */
public enum Singleton6Enum {
    INSTANCE; // 枚举元素代表类的唯一实例

    // 枚举的构造函数总是私有的，防止外部实例化
    private Singleton6Enum() {
    }

    public void whateverMethod() {
    }
}